home *** CD-ROM | disk | FTP | other *** search
/ Personal Paint v7.1 / Cloanto Personal Paint v7.1.iso / rexx / animtoframes.pprx < prev    next >
Text File  |  1997-05-06  |  4KB  |  129 lines

  1. /* Personal Paint Amiga Rexx script - Copyright ⌐ 1995-1997 Cloanto Italia srl */
  2.  
  3. /* $VER: AnimToFrames.pprx 1.1 */
  4.  
  5. /** ENG
  6.   This script converts the current animation into separate frames, creating
  7.   a file for each frame. A three-digit suffix after the user-specified
  8.   file name indicates the position of each frame in the animation, starting
  9.   from frame 1. For example, if the name "Animation" is selected, the first
  10.   frame will be saved as "Animation.001".
  11. */
  12.  
  13. /** DEU
  14.   Dieses Skript wandelt die aktuelle Animation in Einzelbilder um, wobei
  15.   fⁿr jedes Bild eine eigene Datei erstellt wird. Die Position eines
  16.   Bildes innerhalb der Gesamtanimation wird durch eine dreistellige
  17.   Dateiendung wiedergegeben, beginnend mit Bild 1. Beispiel: Wird als
  18.   Name "Animation" festgelegt, so erhΣlt das als erstes gespeicherte
  19.   Einzelbild den Dateinamen "Animation.001".
  20. */
  21.  
  22. /** ITA
  23.   Questo script suddivide l'animazione attuale nei suoi singoli fotogrammi,
  24.   creando un file per ciascun fotogramma. Un suffisso a tre cifre presente
  25.   dopo il nome specificato dall'utente indica la posizione di ciascun
  26.   fotogramma all'interno dell'animazione, iniziando dal fotogramma 1. Ad
  27.   esempio, se si sceglie il nome "Animazione", il primo fotogramma sarα salvato
  28.   come "Animazione.001".
  29. */
  30.  
  31. IF ARG(1, EXISTS) THEN
  32.     PARSE ARG PPPORT
  33. ELSE
  34.     PPPORT = 'PPAINT'
  35.  
  36. IF ~SHOW('P', PPPORT) THEN DO
  37.     IF EXISTS('PPaint:PPaint') THEN DO
  38.         ADDRESS COMMAND 'Run >NIL: PPaint:PPaint'
  39.         DO 30 WHILE ~SHOW('P',PPPORT)
  40.              ADDRESS COMMAND 'Wait >NIL: 1 SEC'
  41.         END
  42.     END
  43.     ELSE DO
  44.         SAY "Personal Paint could not be loaded."
  45.         EXIT 10
  46.     END
  47. END
  48.  
  49. IF ~SHOW('P', PPPORT) THEN DO
  50.     SAY 'Personal Paint Rexx port could not be opened'
  51.     EXIT 10
  52. END
  53.  
  54. ADDRESS VALUE PPPORT
  55. OPTIONS RESULTS
  56. OPTIONS FAILAT 10000
  57.  
  58. Get 'LANG'
  59. IF RESULT = 1 THEN DO        /* Deutsch */
  60.     txt_req_load      = 'Animation auswΣhlen'
  61.     txt_req_sel       = 'Format und Namensstamm auswΣhlen'
  62.     txt_err_abort     = 'Speichervorgang wurde abgebrochen'
  63.     txt_err_save      = 'Fehler beim Speichern: '
  64.     txt_err_oldclient = 'Fⁿr dieses Skript_ist eine neuere Version_von Personal Paint erforderlich'
  65. END
  66. ELSE IF RESULT = 2 THEN DO    /* Italiano */
  67.     txt_req_load      = 'Selezionare animazione'
  68.     txt_req_sel       = 'Selezionare formato e nome'
  69.     txt_err_abort     = 'Operazione annullata'
  70.     txt_err_save      = 'Errore nella scrittura: '
  71.     txt_err_oldclient = 'Questa procedura richiede_una versione pi∙ recente_di Personal Paint'
  72. END
  73. ELSE DO                /* English */
  74.     txt_req_load      = 'Select Animation'
  75.     txt_req_sel       = 'Select Format and Root Name'
  76.     txt_err_abort     = 'User abort during save'
  77.     txt_err_save      = 'Error during save: '
  78.     txt_err_oldclient = 'This script requires a newer_version of Personal Paint'
  79. END
  80.  
  81. Version 'REXX'
  82. IF RESULT < 7 THEN DO
  83.     RequestNotify 'PROMPT "'txt_err_oldclient'"'
  84.     EXIT 10
  85. END
  86.  
  87. LockGUI
  88. GetFrames
  89. frames = RESULT
  90. IF frames = 0 THEN DO
  91.     RequestFile '"'txt_req_load'"'
  92.     IF RC = 0 THEN DO
  93.         LoadAnimation RESULT 'NEW'
  94.         GetFrames
  95.         frames = RESULT
  96.     END
  97. END
  98. IF frames > 0 THEN DO
  99.     RequestFile '"'txt_req_sel'" SAVEMODE LISTFORMATS FORCE'
  100.     IF RC = 0 THEN DO
  101.         savedata = RESULT
  102.         endf = INDEX(savedata, '"', 2)
  103.         filename = SUBSTR(savedata, 2, endf - 2)
  104.         filedata = SUBSTR(savedata, endf + 1)
  105.         GetFramePosition
  106.         savepos = RESULT
  107.         errcode = 0
  108.         SetFramePosition 1
  109.         DO fnum = 1 TO frames
  110.             fname = filename || "." || RIGHT(fnum, 3, "0")
  111.             SaveImage '"'fname'"'filedata 'FORCE QUIET'
  112.             IF RC ~= 0 THEN DO
  113.                 IF RC = 5 THEN
  114.                     errmess = txt_err_abort
  115.                 ELSE
  116.                     errmess = txt_err_save || RC
  117.                 errcode = RC
  118.                 LEAVE
  119.             END
  120.             SetFramePosition 'NEXT'
  121.         END
  122.         SetFramePosition savepos
  123.  
  124.         IF errcode > 0 THEN
  125.             RequestNotify 'PROMPT "'errmess'"'
  126.     END
  127. END
  128. UnlockGUI
  129.